import axios from 'axios'
// import Qs from 'qs';
import { ElMessage } from 'element-plus'

// 创建一个axios请求实例
const request = axios.create({
  baseURL: `${import.meta.env.VITE_APP_BASE_API}`, // 请求基础路径
  // baseURL: import.meta.env.VITE_SERVER +import.meta.env.VITE_APP_BASE_API, // 请求基础路径
  timeout: 5000, // 超时时间
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
  },
  // transformRequest: [(data,headers) => Qs.stringify(data, { indices: true })] //Qs.stringify将参数序列化成key=value&key=value的形式，indices: true是配置参数有传数组的时候，以下标的形式
})
// 请求拦截器，添加token等
request.interceptors.request.use((config) => {
  // config 是请求拦截器默认注入的对象，配置完后要return出来
  return config
})

// 响应拦截器
request.interceptors.response.use(response => {
  // 响应成功的回调，一般会进行简化数据

  return response.data
}, error => {
  let message = ''
  // 响应失败的回调，处理各种http错误
  let status = error.response?.status || 500
  switch (status) {
    case 404: 
      message = '请求地址错误'
      break
    case 500 | 501 | 502 | 503 | 504:
      message = '服务器错误'
      break
    case 401:
      message = '请求参数有误'
      break
    case 403:
      message = '无权访问'
      break
    default: 
      message = '网络出现问题'
  }
  ElMessage({
    type: 'error',
    message
  })
  return Promise.reject(new Error(error))
})

export default request